package com.orientation.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.orientation.dto.MajorInfoDto;
import com.orientation.entity.Major;
import com.orientation.vo.MajorClassStudentVo;
import com.orientation.vo.MajorVo;
import com.orientation.vo.ProgressLengthVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 专业 服务类
 * </p>
 *
 * @author xuandian
 * @since 2022-3-9
 */
public interface MajorService extends IService<Major> {
    /**
     * id查询专业信息
     * @param id
     * @return
     */

    List<Major> findByCollegeId(String id);

    /**
     * 查询匹配咋专业
     * @param collegeId
     * @return
     */
    List<Major> queryMaj(String collegeId, Integer type);

    /**
     * 新增专业 废弃不用
     * @param majorInfoDto
     */

    void insertMajor(@Param("majorInfoDto") MajorInfoDto majorInfoDto);

    /**
     * 添加专业
     * @param major
     */

    void saveMajor( Major major);

    /**
     * 开设日期和专业名查询
     * @param pageNum
     * @param pageSize
     * @param majorName
     * @param estabDate
     * @return
     */

    Page<MajorVo> queryMajor(Integer pageNum, Integer pageSize, String majorName,String collegeName, String estabDate );

    /**
     * 修改启用状态
     * @param major
     */
    void  updateStates(Major major);

    /**
     *查询启用状态数据
     * @param pageNum
     * @param pageSize
     * @param majorName
     * @return
     */
    Page<MajorVo> queryStateMajor(Integer pageNum, Integer pageSize, String majorName );

    /**修改启用状态
     *
     * @param majorId
     * @param state
     * @return
     */
    boolean updateState(String majorId, Integer state);
    /**
     *
     * @param code
     * @return
     */

    Major findByMajorCode(String code);

    /**
     * 查看班级
     * @param majorName
     * @return
     */
    List<MajorClassStudentVo> queryMajorName(String majorName);

    /**
     * 查看班级
     * @param pageNum
     * @param pageSize
     * @param majorName
     * @return
     */
    Page<MajorClassStudentVo>queryPageMajorName(Integer pageNum, Integer pageSize, String majorName );

    /**
     *报道情况
     * @return list ProgressLengthVo
     */
    List<ProgressLengthVo> progressLengthVos(String collegeId);

    /**
     * 专业宿舍选
     * @return
     */
    List<ProgressLengthVo> getBedProgressLengthVos(String collegeId);
    /**
     * 物资
     * @return
     */
    List<ProgressLengthVo> getGoodsProgressLengthVos(String collegeId);
}
